from __future__ import absolute_import
from celery import Celery
from celery.schedules import crontab
from datetime import timedelta
import os

# 设置默认Django设置模块（如果使用Django的话）
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')

# 创建Celery应用
app = Celery('tasks',
             broker='redis://localhost:6379/0',
             backend='redis://localhost:6379/0')

"""
这段代码用于配置Celery应用的序列化相关设置：
task_serializer='json'：设置任务序列化格式为JSON
accept_content=['json']：指定接受的内容类型为JSON
result_serializer='json'：设置结果序列化格式为JSON
enable_utc=True：启用UTC时区
主要功能是统一Celery任务的序列化方式，确保任务数据以JSON格式进行传输和存储。
"""
# 使用默认配置
app.conf.update(
    task_serializer='json',
    accept_content=['json'],
    result_serializer='json',
    enable_utc=True,
)

# 自动从所有已注册的Django应用中加载任务（如果使用Django的话）
# app.autodiscover_tasks()

# 配置定时任务
app.conf.beat_schedule = {
    # 每分钟打印当前时间的任务
    'print-time-every-minute': {
        'task': 'tasks.tasks.print_current_time',
        'schedule': crontab(minute='*'),  # 每分钟执行一次
    },
    # 在当前时间顺延2分钟提示吃药的任务
    'remind-medicine': {
        'task': 'tasks.tasks.remind_medicine',
        'schedule': timedelta(minutes=2),  # 每2分钟执行一次
    },
}

# 配置时区
app.conf.timezone = 'Asia/Shanghai'

if __name__ == '__main__':
    app.start()
